package fachklassen;

import helper.BLError;
import helper.BLWarning;
import helper.Helper;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;

import database.DatabaseManager;
/**
 * Fachklasse mit Gettern und Settern
 *
 * @author	Michael Wolf
 * @author	Tanja Goletz
 * @version	1.0
 */
public class Azubi {
	int azubiID;
	String vorname;
	String nachname;
	String strasse;
	String hausnr;
	String plz;
	String ort;
	String geburtsland;
	String geburtsort;
	Date geburtsdatum;
	String staatsangehoerigkeit;
	String religionszugehoerigkeit;
	String telefon;
	String mobil;
	String email;
	Date einschulungsjahrGrundschule;
	boolean verkuerzer;
	
	int klassenID;
	Klasse klasse = null;
	int ausbilderID;
	Ausbilder ausbilder = null;
	ArrayList<Zeugnis> zeugnisse = null;

	public int getAzubiID() {
		return azubiID;
	}
	public void setAzubiID(int azubiID) {
		this.azubiID = azubiID;
	}
	public String getVorname() {
		return vorname;
	}
	public void setVorname(String vorname) {
		this.vorname = vorname;
	}
	public String getNachname() {
		return nachname;
	}
	public void setNachname(String nachname) {
		this.nachname = nachname;
	}
	public String getStrasse() {
		return strasse;
	}
	public void setStrasse(String strasse) {
		this.strasse = strasse;
	}
	public String getHausnr() {
		return hausnr;
	}
	public void setHausnr(String hausnr) {
		this.hausnr = hausnr;
	}
	public String getPlz() {
		return plz;
	}
	public void setPlz(String plz) {
		this.plz = plz;
	}
	public String getOrt() {
		return ort;
	}
	public void setOrt(String ort) {
		this.ort = ort;
	}
	public String getGeburtsland() {
		return geburtsland;
	}
	public void setGeburtsland(String geburtsland) {
		this.geburtsland = geburtsland;
	}
	public String getGeburtsort() {
		return geburtsort;
	}
	public void setGeburtsort(String geburtsort) {
		this.geburtsort = geburtsort;
	}
	public Date getGeburtsdatum() {
		return geburtsdatum;
	}
	public void setGeburtsdatum(String geburtsdatum) throws ParseException {
		this.geburtsdatum = Helper.parseDate(geburtsdatum);
	}
	public void setGeburtsdatum(Date geburtsdatum) {
		this.geburtsdatum = geburtsdatum;
	}
	public String getStaatsangehoerigkeit() {
		return staatsangehoerigkeit;
	}
	public void setStaatsangehoerigkeit(String staatsangehoerigkeit) {
		this.staatsangehoerigkeit = staatsangehoerigkeit;
	}
	public String getReligionszugehoerigkeit() {
		return religionszugehoerigkeit;
	}
	public void setReligionszugehoerigkeit(String religionsangehoerigkeit) {
		this.religionszugehoerigkeit = religionsangehoerigkeit;
	}
	public String getTelefon() {
		return telefon;
	}
	public void setTelefon(String telefon) {
		this.telefon = telefon;
	}
	public String getMobil() {
		return mobil;
	}
	public void setMobil(String mobil) {
		this.mobil = mobil;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getEinschulungsjahrGrundschule() {
		return einschulungsjahrGrundschule;
	}
	public void setEinschulungsjahrGrundschule(String einschulungsjahrGrundschule) throws ParseException {
		this.einschulungsjahrGrundschule = Helper.parseDate(einschulungsjahrGrundschule);
	}
	public void setEinschulungsjahrGrundschule(Date einschulungsjahrGrundschule) {
		this.einschulungsjahrGrundschule = einschulungsjahrGrundschule;
	}
	public int getKlassenID() {
		return klassenID;
	}
	public void setKlassenID(int klassenID) {
		this.klassenID = klassenID;
		this.klasse = null;
	}
	public Klasse getKlasse() throws BLError, BLWarning {
		if (klasse == null) {
			ArrayList<Object> elements = DatabaseManager.getInstance().getByAttribute(Klasse.class, "klassenID", klassenID);
			if (elements.size() == 0) klasse = null;
			else klasse = (Klasse)elements.get(0);
		}
		return klasse;
	}
	public void setKlasse(Klasse klasse) {
		this.klasse = klasse;
		this.klassenID = klasse == null ? 0 : klasse.getKlassenID();
	}
	public int getAusbilderID() {
		return ausbilderID;
	}
	public void setAusbilderID(int ausbilderID) {
		this.ausbilderID = ausbilderID;
		this.ausbilder = null;
	}
	public Ausbilder getAusbilder() throws BLError, BLWarning {
		if (ausbilder == null) {
			ArrayList<Object> elements = DatabaseManager.getInstance().getByAttribute(Ausbilder.class, "ausbilderID", ausbilderID);
			if (elements.size() == 0) ausbilder = null;
			else ausbilder = (Ausbilder)elements.get(0);
		}
		return ausbilder;
	}
	public void setAusbilder(Ausbilder ausbilder) {
		this.ausbilder = ausbilder;
		this.ausbilderID = ausbilder.getAusbilderID();
	}
	public ArrayList<Zeugnis> getZeugnisse() throws BLError, BLWarning {
		if (zeugnisse == null) {
			ArrayList<Object> elements = DatabaseManager.getInstance().getByAttribute(Zeugnis.class, "azubiID", azubiID);
			zeugnisse = new ArrayList<Zeugnis>();
			for (Object element : elements) {
				zeugnisse.add((Zeugnis)element);
			}
		}
		return zeugnisse;
	}
	
	public boolean getVerkuerzer() {
		return verkuerzer;
	}
	public void setVerkuerzer(boolean verkuerzer) {
		this.verkuerzer = verkuerzer;
	}
	public void setVerkuerzer(int verkuerzer) {
		this.verkuerzer = verkuerzer != 0;
	}
	public String toString() {
		return this.vorname+" "+this.nachname;
	}
	public Betrieb getBetrieb() throws BLError, BLWarning {
		if (this.getAusbilder() == null) return null;
		return this.getAusbilder().getBetrieb();
	}
	public Bildungsgang getBildungsgang() throws BLError, BLWarning {
		if (this.getKlasse() == null) return null;
		return this.getKlasse().getBildungsgang();
	}
}
